package problem21;

//21.合并两个有序链表
//https://leetcode.cn/problems/merge-two-sorted-lists/description/


class ListNode {
     int val;
     ListNode next;
     ListNode() {}
     ListNode(int val) { this.val = val; }
     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}

class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        return dfs(list1, list2);
    }
    public ListNode dfs(ListNode list1, ListNode list2) {
        if(list1 == null || list2 == null) 
            return list1 == null ? list2 : list1;
            
        if(list1.val < list2.val) {
            list1.next = dfs(list1.next, list2);
            return list1;
        }else {
            list2.next = dfs(list1,list2.next);
            return list2;
        }
    }
}